<?php
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

/**
 * 后台管理员表
 * Class AdminUser
 * @package App\Models
 */
class AdminUser extends Model
{
    /**
     * 与模型关联的表名
     * @var string
     */
    protected $table = 'admin_user';

    /**
     * 与表关联的主键
     * @var string
     */
    protected $primaryKey = 'id';

    /**
     * 主键是否主动递增 默认为 true
     * @var bool
     */
    public $incrementing = true;

    /**
     * 自动递增主键的「类型」 默认为int
     * @var string
     */
    protected $keyType = 'int';

    /**
     * 是否主动维护时间戳 默认为true
     * Eloquent 预期你的数据表中存在 created_at 和 updated_at 两个字段,自动管理这两个列
     *
     * @var bool
     */
    public $timestamps = true;

    /**
     * 不可批量赋值的属性
     * @var array
     */
    protected $guarded = [];

    /**
     * 数组中属性会被隐藏
     * @var array
     */
    protected $hidden = ['password'];


    /**
     * 用户性别
     */
    public function getSexAttribute($value){
        return [
            'value' => $value,
            'name' => $this->sexValue()[$value]
        ];
    }

    /**
     * 用户状态
     * @return array
     */
    public function getStatusAttribute($value){
        return [
            'value' => $value,
            'name' => $this->statusValue()[$value],
        ];
    }

    /**
     * 是否是超级管理员
     * @return array
     */
    public function getIsAdministratorAttribute($value){
        return [
            'value' => $value,
            'name' => $this->administratorValue()[$value],
        ];
    }

    /**
     * 性别中文名
     * @return array
     */
    public function sexValue(){
        return [
            0 => '保密',
            1 => '男',
            2 => '女'
        ];
    }

    /**
     * 帐号的状态 中文名
     * @return array
     */
    public function statusValue(){
        return [
            0 => '禁用',
            1 => '启用',
        ];
    }

    /**
     * 是否是超级管理员
     * @return array
     */
    public function administratorValue(){
        return [
            0 => '否',
            1 => '是'
        ];
    }

    /**+
     * 获取与管理员相关的权限
     * @return \Illuminate\Database\Eloquent\Relations\HasOne
     */
    public function role(){
        return $this->hasOne('App\Models\Role', 'id', 'role_id');
    }
}
